#!/usr/bin/python
# -*- coding: utf-8 -*-

H = [[0,1,2,3],[3,2,0,1],[3,2,0,1],[1,0,2,3]]
M = [[0,2,1,3],[3,1,2,0],[0,3,1,2],[2,3,0,1]]
parejas = [-1,-1,-1,-1]
mlibre = [True,True,True,True]
hlibre = [True,True,True,True]

def estable(hombre,mujer,preferencia):
    """Si hay un soltero que prefiere a la mujer antes que el
    orden de preferencia de hombre, (hombre, mujer) no sera
    una pareja estable"""
    i = 0
    while M[mujer][i] != hombre:
        if hlibre[M[mujer][i]]:
            for i in range(0,preferencia-1):
                if H[hombre][i] == mujer:
                    return false
        i += 1
    return True

def pareja(hombre):
    for preferencia in range(0,3):
        print hombre
        print parejas
        mujer = H[hombre][preferencia]
        if mlibre[mujer] and estable(hombre,mujer,preferencia):
            parejas[hombre] = mujer
            mlibre[mujer] = False
            hlibre[mujer] = False
            if hombre < 3 :
                if not(pareja(hombre+1)):
                    mlibre[mujer] = True
            else:
                return True
    return False

if __name__ == "__main__":
    pareja(0)
    print parejas
